Spring Boot 源码里的 6 个设计模式
(1)工厂模式SpringApplication#createApplicationContext() 根据 web 类型返回
• AnnotationConfigServletWebServerApplicationContext
• AnnotationConfigReactiveWebServerApplicationContext
(2)模板方法SpringApplicationRunListener:把启动过程拆成
starting → environmentPrepared → contextPrepared → contextLoaded → started → running → failed
子类只需覆写某个阶段。
(3)观察者模式ApplicationEventMulticaster 广播事件,如 ApplicationReadyEvent。
(4)策略模式EnvironmentPostProcessor 不同实现加载不同配置源:
• ConfigDataEnvironmentPostProcessor → application.yml
• SystemEnvironmentPropertySourceEnvironmentPostProcessor → 系统变量
(5)装饰器模式BeanDefinitionDecorator 在 XML 中给 <bean> 再包一层 <aop:scoped-proxy>。
(6)SPI(Service Provider Interface)META-INF/spring.factories 让第三方 jar 声明自动配置,不修改主项目源码。